
#****************************************************************************************************
# File Start!
#***************************************************************************************************/

#*
 #
 #  Copyright (c) 2024-2025 by flechazo. All rights reserved.
 #
 # Author : CarlChai LinFeng Chai flechazo
 # Website: flechazo.mba
 #
 # Change Logs:
 # Date           Author       Notes
 # 2025-06-17     cc          the first version
 #
#/

#****************************************************************************************************
# Include
#***************************************************************************************************/

# ui #
import pystray
from pystray import MenuItem as item
# img #
from PIL import Image
import threading

#****************************************************************************************************
# Define
#***************************************************************************************************/

#****************************************************************************************************
# Type Define
#***************************************************************************************************/

class display_icon:
    def __init__(self,root,icon_path):
        # check #
        if icon_path is "":
            return None
        self.root = root
        # withdraw windows #
        self.root.protocol("WM_DELETE_WINDOW", self.withdraw)
        # pystray #
        self.icon = pystray.Icon(icon_path,
                                Image.open(icon_path),
                                "快捷键管理",
                                menu=pystray.Menu(
                                    item("🌈 显示提示", self.show),
                                    item("❌ 退出程序", self.exit)
                                ))
        # start #
        threading.Thread(target=self.icon.run, daemon=True).start()

    def show(self,icon=None, item=None):
        self.root.update()
        self.root.deiconify()
    
    def withdraw(self):
        self.root.withdraw()

    def exit(self):
        self.icon.stop()
        self.root.destroy()
#****************************************************************************************************
# Global Variable
#***************************************************************************************************/

#****************************************************************************************************
# Function Impletement
#***************************************************************************************************/

#****************************************************************************************************
# exports
#***************************************************************************************************/

#****************************************************************************************************
# File End!
#***************************************************************************************************/
